﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GeoWeb.Common
{
    /// <summary>
    /// IGeoSet集合接口，继承ICollection<T>接口
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IGeoSet<T> : ICollection<T>
    {
        /// <summary>
        /// 合并数据集
        /// </summary>
        /// <param name="other">需要合并对象</param>
        /// <returns></returns>
        IGeoSet<T> Union(IGeoSet<T> other);


        /// <summary>
        /// 返回集合的交集
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        IGeoSet<T> Intersect(IGeoSet<T> other);


        /// <summary>
        /// 获取一个集合，此集合不包含集合A、集合B的并集
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        IGeoSet<T> ExclusiveOr(IGeoSet<T> other);


        /// <summary>
        /// 获取不包含提供集合的其他集合
        /// </summary>
        /// <param name="other"></param>
        /// <returns></returns>
        IGeoSet<T> Minus(IGeoSet<T> other);
    }

}
